package com.sjc.zeye.product.function;

import com.sjc.zeye.product.domain.UserBehavior;
import org.apache.flink.api.common.functions.AggregateFunction;

/**
 * 实现累加的效果
 */
public class ProductCount implements AggregateFunction<UserBehavior,Long,Long> {
    @Override
    public Long createAccumulator() {
        // 创建一个数据统计的容器，提供给后续操作使用
        return 0l;
    }

    @Override
    public Long add(UserBehavior userBehavior, Long acc) {
        // 每个元素被添加进窗口的时候调用
        return acc + 1;
    }

    @Override
    public Long getResult(Long acc) {
        // 窗口统计事件触发时调用来返回出统计的结果。
        return acc;
    }

    @Override
    public Long merge(Long acc, Long acc1) {
        //只有在当窗口合并的时候调用,合并2个容器
        return acc + acc1;
    }
}
